Bueno no se que tanto hayas profundizado en C# pero este tema puede llegar a parecer muy complicado aunque no lo es.
El punto es que el predicado es un delegado, hay 2 o tres formas de crear delegados, una es usando metodos anonimos y la otra es creando el delegado como tal... todo va en como te sientas mas comodo ( y en la version de c# que tengas).
Ejemplo de metodo anonimo:
lista.Find( delegate(String s){
if(s == cadenaQueBusco)
return true;
else
return false;
}
);
Ejemplo de metodo no anonimo:
private bool Delegado(NumeroIndice s)
{
if (s.ToString() == "cadenaQueBusco")
return true;
else
return false;
}
...
...
...
lista.Find( Delegado );